namespace ext.grid
{
	using System;
	using System.Runtime.CompilerServices;
	using System.Html;
	using System.Collections;
	
	
	/// <summary>Configuration Structure</summary>
	/// <definedin>src\widgets\grid\GridView.js</definedin>
	public sealed class GridView_Configuration : Record
	{
		
		#region Fields
		/// <summary>
		/// True to add a second TR element per row that can be used to provide a row body
		/// that spans beneath the data row. Use the {@link #getRowClass} method&apos;s rowParams config to customize the row body.
		/// </summary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("enableRowBody")]
		public bool EnableRowBody;
		
		/// <summary>
		/// Default text (html tags are accepted) to display in the grid body when no rows
		/// are available (defaults to &apos;&apos;). This value will be used to update the {@link #mainBody}:
		/// 
		/// this.mainBody.update(&apos;&amp;lt;div class=&quot;x-grid-empty&quot;&gt;&apos; + this.emptyText + &apos;&amp;lt;/div&gt;&apos;);
		/// </summary>
		/// <htmlSummary>
		/// Default text (html tags are accepted) to display in the grid body when no rows
		/// are available (defaults to &apos;&apos;). This value will be used to update the &lt;tt&gt;{@link #mainBody}&lt;/tt&gt;:
		/// &lt;pre&gt;&lt;code&gt;
		/// this.mainBody.update(&apos;&amp;lt;div class=&quot;x-grid-empty&quot;&gt;&apos; + this.emptyText + &apos;&amp;lt;/div&gt;&apos;);
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("emptyText")]
		public string EmptyText;
		
		/// <summary>
		/// True to disable the grid column headers (defaults to false).
		/// Use the {@link Ext.grid.ColumnModel ColumnModel} {@link Ext.grid.ColumnModel#menuDisabled menuDisabled}
		/// config to disable the menu for individual columns. While this config is true the
		/// following will be disabled:   clicking on header to sort  the trigger to reveal the menu.
		/// </summary>
		/// <htmlSummary>
		/// True to disable the grid column headers (defaults to &lt;tt&gt;false&lt;/tt&gt;).
		/// Use the {@link Ext.grid.ColumnModel ColumnModel} &lt;tt&gt;{@link Ext.grid.ColumnModel#menuDisabled menuDisabled}&lt;/tt&gt;
		/// config to disable the &lt;i&gt;menu&lt;/i&gt; for individual columns. While this config is true the
		/// following will be disabled:&lt;div class=&quot;mdetail-params&quot;&gt;&lt;ul&gt;
		/// &lt;li&gt;clicking on header to sort&lt;/li&gt;
		/// &lt;li&gt;the trigger to reveal the menu.&lt;/li&gt;
		/// &lt;/ul&gt;&lt;/div&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("headersDisabled")]
		public bool HeadersDisabled;
		
		/// <summary>
		/// True to defer {@link #emptyText} being applied until the store&apos;s
		/// first load (defaults to true).
		/// </summary>
		/// <htmlSummary>
		/// True to defer &lt;tt&gt;{@link #emptyText}&lt;/tt&gt; being applied until the store&apos;s
		/// first load (defaults to &lt;tt&gt;true&lt;/tt&gt;).
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("deferEmptyText")]
		public bool DeferEmptyText;
		
		/// <summary>
		/// The amount of space to reserve for the vertical scrollbar
		/// (defaults to undefined). If an explicit value isn&apos;t specified, this will be automatically
		/// calculated.
		/// </summary>
		/// <htmlSummary>
		/// The amount of space to reserve for the vertical scrollbar
		/// (defaults to &lt;tt&gt;undefined&lt;/tt&gt;). If an explicit value isn&apos;t specified, this will be automatically
		/// calculated.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("scrollOffset")]
		public System.Number ScrollOffset;
		
		/// <summary>
		/// Defaults to false. Specify true to have the column widths re-proportioned
		/// when the grid is initially rendered. The
		/// {@link Ext.grid.Column#width initially configured width} of each column will be adjusted
		/// to fit the grid width and prevent horizontal scrolling. If columns are later resized (manually
		/// or programmatically), the other columns in the grid will not be resized to fit the grid width.
		/// See {@link #forceFit} also.
		/// </summary>
		/// <htmlSummary>
		/// Defaults to &lt;tt&gt;false&lt;/tt&gt;. Specify &lt;tt&gt;true&lt;/tt&gt; to have the column widths re-proportioned
		/// when the grid is &lt;b&gt;initially rendered&lt;/b&gt;. The
		/// {@link Ext.grid.Column#width initially configured width}&lt;/tt&gt; of each column will be adjusted
		/// to fit the grid width and prevent horizontal scrolling. If columns are later resized (manually
		/// or programmatically), the other columns in the grid will &lt;b&gt;not&lt;/b&gt; be resized to fit the grid width.
		/// See &lt;tt&gt;{@link #forceFit}&lt;/tt&gt; also.
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("autoFill")]
		public bool AutoFill;
		
		/// <summary>
		/// Defaults to false. Specify true to have the column widths re-proportioned
		/// at all times.  The {@link Ext.grid.Column#width initially configured width} of each
		/// column will be adjusted to fit the grid width and prevent horizontal scrolling. If columns are
		/// later resized (manually or programmatically), the other columns in the grid will be resized
		/// to fit the grid width.  Columns which are configured with fixed: true are omitted from being resized.  See {@link #autoFill}.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;Defaults to &lt;tt&gt;false&lt;/tt&gt;. Specify &lt;tt&gt;true&lt;/tt&gt; to have the column widths re-proportioned
		/// at &lt;b&gt;all times&lt;/b&gt;.&lt;/p&gt;
		/// &lt;p&gt;The {@link Ext.grid.Column#width initially configured width}&lt;/tt&gt; of each
		/// column will be adjusted to fit the grid width and prevent horizontal scrolling. If columns are
		/// later resized (manually or programmatically), the other columns in the grid &lt;b&gt;will&lt;/b&gt; be resized
		/// to fit the grid width.&lt;/p&gt;
		/// &lt;p&gt;Columns which are configured with &lt;code&gt;fixed: true&lt;/code&gt; are omitted from being resized.&lt;/p&gt;
		/// &lt;p&gt;See &lt;tt&gt;{@link #autoFill}&lt;/tt&gt;.&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("forceFit")]
		public bool ForceFit;
		
		/// <summary>The CSS classes applied to a header when it is sorted. (defaults to [&apos;sort-asc&apos;, &apos;sort-desc&apos;])</summary>
		/// <htmlSummary>The CSS classes applied to a header when it is sorted. (defaults to &lt;tt&gt;[&apos;sort-asc&apos;, &apos;sort-desc&apos;]&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("sortClasses")]
		public System.Array SortClasses;
		
		/// <summary>The text displayed in the &apos;Sort Ascending&apos; menu item (defaults to &apos;Sort Ascending&apos;)</summary>
		/// <htmlSummary>The text displayed in the &apos;Sort Ascending&apos; menu item (defaults to &lt;tt&gt;&apos;Sort Ascending&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("sortAscText")]
		public string SortAscText;
		
		/// <summary>The text displayed in the &apos;Sort Descending&apos; menu item (defaults to &apos;Sort Descending&apos;)</summary>
		/// <htmlSummary>The text displayed in the &apos;Sort Descending&apos; menu item (defaults to &lt;tt&gt;&apos;Sort Descending&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("sortDescText")]
		public string SortDescText;
		
		/// <summary>The text displayed in the &apos;Columns&apos; menu item (defaults to &apos;Columns&apos;)</summary>
		/// <htmlSummary>The text displayed in the &apos;Columns&apos; menu item (defaults to &lt;tt&gt;&apos;Columns&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("columnsText")]
		public string ColumnsText;
		
		/// <summary>
		/// The CSS class applied to a selected row (defaults to &apos;x-grid3-row-selected&apos;). An
		/// example overriding the default styling:
		/// 
		/// .x-grid3-row-selected {background-color: yellow;}
		/// 
		/// Note that this only controls the row, and will not do anything for the text inside it. To style inner
		/// facets (like text) use something like:
		/// 
		/// .x-grid3-row-selected .x-grid3-cell-inner {
		/// color: #FFCC00;
		/// }
		/// </summary>
		/// <htmlSummary>
		/// The CSS class applied to a selected row (defaults to &lt;tt&gt;&apos;x-grid3-row-selected&apos;&lt;/tt&gt;). An
		/// example overriding the default styling:
		/// &lt;pre&gt;&lt;code&gt;
		/// .x-grid3-row-selected {background-color: yellow;}
		/// &lt;/code&gt;&lt;/pre&gt;
		/// Note that this only controls the row, and will not do anything for the text inside it. To style inner
		/// facets (like text) use something like:
		/// &lt;pre&gt;&lt;code&gt;
		/// .x-grid3-row-selected .x-grid3-cell-inner {
		/// color: #FFCC00;
		/// }
		/// &lt;/code&gt;&lt;/pre&gt;
		/// </htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("selectedRowClass")]
		public string SelectedRowClass;
		
		/// <summary>True to show the dirty cell indicator when a cell has been modified. Defaults to true.</summary>
		/// <htmlSummary>True to show the dirty cell indicator when a cell has been modified. Defaults to &lt;tt&gt;true&lt;/tt&gt;.</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("markDirty")]
		public bool MarkDirty;
		
		/// <summary>The number of levels to search for cells in event delegation (defaults to 4)</summary>
		/// <htmlSummary>The number of levels to search for cells in event delegation (defaults to &lt;tt&gt;4&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("cellSelectorDepth")]
		public System.Number CellSelectorDepth;
		
		/// <summary>The number of levels to search for rows in event delegation (defaults to 10)</summary>
		/// <htmlSummary>The number of levels to search for rows in event delegation (defaults to &lt;tt&gt;10&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("rowSelectorDepth")]
		public System.Number RowSelectorDepth;
		
		/// <summary>The number of levels to search for row bodies in event delegation (defaults to 10)</summary>
		/// <htmlSummary>The number of levels to search for row bodies in event delegation (defaults to &lt;tt&gt;10&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("rowBodySelectorDepth")]
		public System.Number RowBodySelectorDepth;
		
		/// <summary>The selector used to find cells internally (defaults to &apos;td.x-grid3-cell&apos;)</summary>
		/// <htmlSummary>The selector used to find cells internally (defaults to &lt;tt&gt;&apos;td.x-grid3-cell&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("cellSelector")]
		public string CellSelector;
		
		/// <summary>The selector used to find rows internally (defaults to &apos;div.x-grid3-row&apos;)</summary>
		/// <htmlSummary>The selector used to find rows internally (defaults to &lt;tt&gt;&apos;div.x-grid3-row&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("rowSelector")]
		public string RowSelector;
		
		/// <summary>The selector used to find row bodies internally (defaults to &apos;div.x-grid3-row&apos;)</summary>
		/// <htmlSummary>The selector used to find row bodies internally (defaults to &lt;tt&gt;&apos;div.x-grid3-row&apos;&lt;/tt&gt;)</htmlSummary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("rowBodySelector")]
		public string RowBodySelector;
		
		/// <summary>The CSS class to add to the header cell when its menu is visible. Defaults to &apos;x-grid3-hd-menu-open&apos;</summary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("headerMenuOpenCls")]
		public string HeaderMenuOpenCls;
		
		/// <summary>The CSS class added to each row when it is hovered over. Defaults to &apos;x-grid3-row-over&apos;</summary>
		/// <definedin>src\widgets\grid\GridView.js</definedin>
		[ScriptName("rowOverCls")]
		public string RowOverCls;
		#endregion
		
		#region ext.util.Observable_Configuration Members
		/// <summary>
		/// A config object containing one or more event handlers to be added to this
		/// object during initialization. This should be a valid listeners config object as specified in the
		/// {@link #addListener} example for attaching multiple handlers at once.
		/// </summary>
		/// <htmlSummary>
		/// &lt;p&gt;A config object containing one or more event handlers to be added to this
		/// object during initialization. This should be a valid listeners config object as specified in the
		/// {@link #addListener} example for attaching multiple handlers at once.&lt;/p&gt;
		/// &lt;br&gt;&lt;p&gt;&lt;b&gt;&lt;u&gt;DOM events from ExtJs {@link Ext.Component Components}&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;
		/// &lt;br&gt;&lt;p&gt;While &lt;i&gt;some&lt;/i&gt; ExtJs Component classes export selected DOM events (e.g. &quot;click&quot;, &quot;mouseover&quot; etc), this
		/// is usually only done when extra value can be added. For example the {@link Ext.DataView DataView}&apos;s
		/// &lt;b&gt;&lt;code&gt;{@link Ext.DataView#click click}&lt;/code&gt;&lt;/b&gt; event passing the node clicked on. To access DOM
		/// events directly from a Component&apos;s HTMLElement, listeners must be added to the &lt;i&gt;{@link Ext.Component#getEl Element}&lt;/i&gt; after the Component
		/// has been rendered. A plugin can simplify this step:&lt;pre&gt;&lt;code&gt;
		/// // Plugin is configured with a listeners config object.
		/// // The Component is appended to the argument list of all handler functions.
		/// Ext.DomObserver = Ext.extend(Object, {
		/// constructor: function(config) {
		/// this.listeners = config.listeners ? config.listeners : config;
		/// },
		///
		/// // Component passes itself into plugin&amp;#39;s init method
		/// init: function(c) {
		/// var p, l = this.listeners;
		/// for (p in l) {
		/// if (Ext.isFunction(l[p])) {
		/// l[p] = this.createHandler(l[p], c);
		/// } else {
		/// l[p].fn = this.createHandler(l[p].fn, c);
		/// }
		/// }
		///
		/// // Add the listeners to the Element immediately following the render call
		/// c.render = c.render.{@link Function#createSequence createSequence}(function() {
		/// var e = c.getEl();
		/// if (e) {
		/// e.on(l);
		/// }
		/// });
		/// },
		///
		/// createHandler: function(fn, c) {
		/// return function(e) {
		/// fn.call(this, e, c);
		/// };
		/// }
		/// });
		///
		/// var combo = new Ext.form.ComboBox({
		///
		/// // Collapse combo when its element is clicked on
		/// plugins: [ new Ext.DomObserver({
		/// click: function(evt, comp) {
		/// comp.collapse();
		/// }
		/// })],
		/// store: myStore,
		/// typeAhead: true,
		/// mode: &apos;local&apos;,
		/// triggerAction: &apos;all&apos;
		/// });
		/// &lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;
		/// </htmlSummary>
		/// <definedin>src\ext-core\src\util\Observable.js</definedin>
		/// <optional>Optional Field</optional>
		[ScriptName("listeners")]
		public object Listeners;
		#endregion
	}
}
